<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // forEach(function(v , i , arr){})   遍历数组

        // map(function(v , i , arr){return})     改变数组中的值,返回新的数组    return

        // filter(function(v , i , arr){return})   过滤数据，找到满足条件的数据

        // some(function(v , i , arr){return})   是否有一些满足条件的数据    返回布尔值

        // every(function(v , i , arr){return})  是否每一个数据都满足条件    返回布尔值

        // reduce(function(res , v , i , arr){return} , [init])    归并数组中的值 ,  第一个参数是回调函数，第二个参数可以省略(如果有res的初始值就是init)



        var arr = [1, 2, 3];
        // 回调函数   执行了三次
        arr.forEach((v, i) => {
            if (i === 1) {
                return
            }
            console.log(v);    // 1  3
        })




        // myForEach  遍历
        function myForEach(arr, cb) {
            for (var i = 0; i < arr.length; i++) {
                cb(arr[i], i, arr)
            }
        }


        // myMap  遍历
        function myMap(arr, cb) {
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
                var v = cb(arr[i], i, arr);
                newArr.push(v);
            }
            return newArr;
        }


        console.log(myMap([2, 3, 4, 5], v => v * 2))


        // myFilter  找到满足条件的数据
        function myFilter(arr, cb) {
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
                if (cb(arr[i], i, arr)) {
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }


        console.log(myFilter([2, 3, 4, 5], v => v > 2))





        var arr = [4, 5, 6, 7];
        console.log(arr.every(v => v > 3));
        console.log(arr.some(v => v > 5));


        var arr = [4, 5, 6, 7];
        var sum = arr.reduce((res, v, i, arr) => {
            return res += v;
        }, 10)
        console.log(sum);




        function myReduce(arr, cb) {
            var sum = arr[0];
            for (var i = 1; i < arr.length; i++) {
                sum = cb(sum, arr[i], i, arr)
            }
            return sum;
        }


        console.log(myReduce([1, 2, 3, 4], (res, v) => res *= v));








        // var arr = [4, 5, 6, 7];
        // // 初始值为数组的第一个值
        // var sum = arr[0];
        // for (var i = 1; i < arr.length; i++) {
        //     sum += arr[i]
        // }



    </script>

</body>

</html>